`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2021/07/05 18:24:59
// Design Name: 
// Module Name: regfile_2r1w
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module regfile_2r1w(adr_rd_1, adr_rd_2, adr_wr, we, clk, din, dout1, dout2);
    parameter m = 32;
    parameter n = 4;
    
    input [n-1:0] adr_rd_1, adr_rd_2, adr_wr;
    input [m-1:0] din;
    input we, clk;
    output [m-1:0] dout1, dout2;
    
    reg [m-1:0] data [0:(2**n)-1];
    
    always @(posedge clk)
    begin
        if(we & (|adr_wr))
            data[adr_wr] <= din;         
    end
    
    assign dout1 = (|adr_rd_1)?data[adr_rd_1]:0;
    assign dout2 = (|adr_rd_2)?data[adr_rd_2]:0;
endmodule